var sym = new Symbol(); // TypeError

/*
这会阻止创建一个显式的 Symbol 包装器对象而不是一个 Symbol 值。
围绕原始数据类型创建一个显式包装器对象从 ECMAScript 6 开始不再被支持。
然而，现有的原始包装器对象，如 new Boolean、new String以及new Number，因为遗留原因仍可被创建。
*/


//如果你真的想创建一个 Symbol 包装器对象 (Symbol wrapper object)，你可以使用 Object() 函数：
/*var sym = Symbol("foo");
typeof sym;     // "symbol"
var symObj = Object(sym);
typeof symObj;  // "object"*/


//当一个 Symbol 包装器对象作为一个属性的键时，这个对象将被强制转换为它包装过的 symbol 值：
var sym = Symbol("foo");
var obj = {[sym]: 1};
obj[sym];            // 1
obj[Object(sym)];    // still 1